package com.jiot.controller.device;

import java.util.Date;
import java.util.List;
import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jiot.common.CommonEnum;
import com.jiot.common.model.Device;
import com.jiot.common.model.User;
import com.jiot.common.model.dto.DeviceThresholdDTO;
import com.jiot.util.BaseUtil;

/**
 * @author hushi
 * @Date: 2020/10/13 16:58
 * @Description:
 */
public class DeviceService {

	Integer pageSize = 10;
	
	public Ret selectPageByProjectId(User user, Integer projectId, Integer pageNumber) {
		Page<Record> devicePage = Db.paginate(pageNumber, pageSize, "SELECT * ", "FROM device WHERE type = ? ORDER BY id ", projectId, user.getId());
		return Ret.ok("devicePage", devicePage);
    }
	
	public Ret selectByDeviceId(User user,Integer deviceId){
		Record device = Db.findFirst("", user.getId(), deviceId);
		return Ret.ok("device", device);
    }
	
	public Ret bindingDevice(User user, Integer deviceId, Integer projectId, Integer sceneId) {
		
		
		
		
		return Ret.ok();
    }
	
	public Ret unbundlingDevice(User user, Integer deviceId) {
		
		
		
		
		return Ret.ok();
    }
	
	public Ret setThreshold(User user, DeviceThresholdDTO threshold) {
		
		
		
		
		return Ret.ok();
    }
	
	
	/*
	 * 通过code添加一个新的设备
	 */
	public Ret addDeviceByCode(String code) {
		
		Device device = new Device();
        device.setDeviceCode(code);
        device.setDeviceName(code);
        //设备类型断路器
        device.setDeviceType(CommonEnum.DeviceType.BREAKER.getType().byteValue());
        device.setCreateTime(new Date());
        device.save();
		
		return Ret.ok();
    }
	
//	
//	
//    /**
//     * 查询所有设备
//     *
//     * @param selectDeviceAllReq
//     * @return
//     */
//    SelectDeviceAllResp selectDeviceAll(SelectDeviceAllReq selectDeviceAllReq);
//
//    /**
//     * 设备绑定
//     *
//     * @param bindingDeviceReq
//     */
//    void bindingDevice(BindingDeviceReq bindingDeviceReq);
//
//    /**
//     * 设备解绑
//     *
//     * @param unbundlingDeviceReq
//     */
//    void unbundlingDevice(UnbundlingDeviceReq unbundlingDeviceReq);
//
//    /**
//     * 设备信息
//     *
//     * @param detailDeviceReq
//     * @return
//     */
//    DetailDeviceResp detailDevice(DetailDeviceReq detailDeviceReq);
//
//    /**
//     * 根据设备序列号查询设备
//     *
//     * @param findByDeviceCodeReq
//     * @return
//     */
//    FindByDeviceCodeResp findByDeviceCode(FindByDeviceCodeReq findByDeviceCodeReq);
//
//    /**
//     * 设置设备阈值
//     *
//     * @param deviceSetThresholdReq
//     */
//    void setThreshold(DeviceSetThresholdReq deviceSetThresholdReq);
//
//    /**
//     * 从iot上获取设备批量生成到数据库中
//     */
//    void batchGenerationDevice();
//
//    /**
//     * 批量获取设备
//     *
//     * @param getDeviceListReq
//     * @return
//     */
//    GetDeviceListResp deviceList(GetDeviceListReq getDeviceListReq);
//
//    /**
//     * 计算阈值
//     *
//     * @param calculationThresholdReq
//     * @return
//     */
//    CalculationThresholdResp calculationThreshold(CalculationThresholdReq calculationThresholdReq);
//
//    /**
//     * 获取设备参数
//     *
//     * @return
//     */
//    FindByDeviceParamrterResp findByDeviceParamrter();
//
//    /**
//     * 保存设备参数
//     *
//     * @param saveDeviceParametersReq
//     */
//    void saveDeviceParameters(SaveDeviceParametersReq saveDeviceParametersReq);
//
//    /**
//     * 添加默认阈值
//     *
//     * @param addDefaultThresholdReq
//     */
//    void addDefaultThreshold(AddDefaultThresholdReq addDefaultThresholdReq);
//
//    /**
//     * 设置默认阈值
//     *
//     * @param setDefaultThresholdReq
//     */
//    void setDefaultThreshold(SetDefaultThresholdReq setDefaultThresholdReq);
//
//    /**
//     * 根据设备类型获取默认阈值
//     *
//     * @param findByDeviceTypeReq
//     * @return
//     */
//    FindByDeviceTypeResp findByDeviceType(FindByDeviceTypeReq findByDeviceTypeReq);
//
//    /**
//     * 根据项目查询设备
//     *
//     * @param findByProjectIdReq
//     * @return
//     */
//    FindByProjectIdResp findByProjectId(FindByProjectIdReq findByProjectIdReq);
//
//    /**
//     * 根据场景查询设备
//     *
//     * @param findBySceneIdReq
//     * @return
//     */
//    FindBySceneIdResp findBySceneId(FindBySceneIdReq findBySceneIdReq);
//
//    /**
//     * 设备开合闸
//     *
//     * @param deviceOpenAndCloseReq
//     */
//    void deviceOpenAndClose(DeviceOpenAndCloseReq deviceOpenAndCloseReq);
//
//    /**
//     * 修改设备开合闸状态
//     *
//     * @param modifyDeviceSwitchReq
//     */
//    void modifyDeviceSwitch(ModifyDeviceSwitchReq modifyDeviceSwitchReq);
//
//    /**
//     * 根据项目id查询设备
//     *
//     * @param getDeviceListByProjectIdsReq
//     * @return
//     */
//    DeviceListByProjectIdsResp listByProjectIds(GetDeviceListByProjectIdsReq getDeviceListByProjectIdsReq);
//
//    /**
//     * 查询项目设备统计信息
//     *
//     * @return
//     */
//    List<DeviceInfoListResp> allGroupByProject();
//
//    /**
//     * 查询设备最新信息
//     *
//     * @param getRealtimeDataReq
//     * @return
//     */
//    DeviceRealtimeDataResp realtimeData(GetRealtimeDataReq getRealtimeDataReq);
//
//    /**
//     * 更新设备状态
//     *
//     * @param deviceCode
//     * @param status
//     * @return
//     */
//    Boolean updateLineStatus(String deviceCode, String status);
//
//    /**
//     * 待续费列表
//     *
//     * @return
//     */
//    GetDevicesThatAreAboutToExpireResp getDevicesThatAreAboutToExpire();
//
//    /**
//     * 订单停用列表
//     *
//     * @return
//     */
//    DeviceDeactivateListResp deviceDeactivateList();
//
//    /**
//     * 订单详情
//     *
//     * @param deviceOrderDetailReq
//     * @return
//     */
//    DeviceOrderDetailResp deviceOrderDetail(DeviceOrderDetailReq deviceOrderDetailReq);
//
//    /**
//     * 根据状态查询设备
//     *
//     * @param getDeviceByProjectIdAndStatusReq
//     * @return
//     */
//    GetDeviceByProjectIdAndStatusResp getDeviceByProjectIdAndStatus(GetDeviceByProjectIdAndStatusReq getDeviceByProjectIdAndStatusReq);
//
//    /**
//     * 用户设备统计
//     *
//     * @return
//     */
//    UserDeviceStatisticsResp deviceStatistics();
//
//    /**
//     * 根据设备id查询设备
//     *
//     * @param getDeviceListByDeviceIdsReq
//     * @return
//     */
//    GetDeviceListByDeviceIdsResp getDeviceListByDeviceIds(GetDeviceListByDeviceIdsReq getDeviceListByDeviceIdsReq);
//
//    /**
//     * 批量更新设备到期时长
//     *
//     * @param batchEditServiceExpireDateReq
//     */
//    void batchEditServiceExpireDate(BatchEditServiceExpireDateReq batchEditServiceExpireDateReq);
//
//    /**
//     * 设备停用
//     *
//     * @param deactivateDeviceReq
//     */
//    void deactivateDevice(DeactivateDeviceReq deactivateDeviceReq);
//
//    /**
//     * 查询快到期设备
//     *
//     * @return
//     */
//    QueryDevicesThatAreAboutToExpireResp queryDevicesThatAreAboutToExpire();
//
//
//    /**
//     * 查询最早的设备
//     *
//     * @return
//     */
//    UserEarliestDeviceResp queryEarliestDevice();
}
